#include<bits/stdc++.h>
using namespace std;

const int N=1520;
const int dx[]={0,0,1,-1} ;
const int dy[]={1,-1,0,0};
int n,m,st_x,st_y;
char ch;
bool a[N][N],ok;
int vis[N][N][3];

void dfs(int x,int y,int lx,int ly){
	if(ok)return ;
	if(vis[x][y][0]&&(vis[x][y][1]!=lx||vis[x][y][2]!=ly)){
		ok=true;
		return ; 
	}
	vis[x][y][0]=1,vis[x][y][1]=lx,vis[x][y][2]=ly;
	for(int i=0;i<4;i++){
		int xx=(x+n+dx[i])%n;
		int yy=(y+m+dy[i])%m;
		int lxx=lx+dx[i],lyy=ly+dy[i];
		if(!a[xx][yy]){
			if(!vis[xx][yy][0]||vis[xx][yy][1]!=lxx||vis[xx][yy][2]!=lyy){
				dfs(xx,yy,lxx,lyy);
			}
		}
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	while(cin>>n>>m){
		ok=0;
		memset(a,0,sizeof(a));
		memset(vis,0,sizeof(vis));
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				cin>>ch;
				if(ch=='#')a[i][j]=1;
				if(ch=='S')st_x=i,st_y=j;
			}
		}
		dfs(st_x,st_y,st_x,st_y);
		if(ok)cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}
